Semiconductor memory devices have been widely used as main memories in computers, embedded memories and cache memories in microprocessors. Semiconductor memory devices are classified into RAM (Random Access Memory) and ROM (Read Only Memory) devices.
A RAM device is a memory device capable of storing written data and reading the stored data. A RAM device is a volatile memory that does not keep stored data when power is off. Typical examples of RAM devices are Dynamic RAM (DRAM) and Static RAM (SRAM).
A ROM device is only capable of reading stored data. A ROM device is a non-volatile memory that keeps stored data even if the power is off. ROM devices are classified as Programmable ROMS (PROM) and One Time Programmable ROMS (OT-PROM). PROM devices, in turn, are classified as Erasable PROM (EPROM) and Electrically EPROMS (EEPROM). An example of nonvolatile ROM devices is a Flash memory. Flash memories are capable of high integration.
Typical semiconductor memory devices comprise a memory cell array, a row decoder, a column decoder, and a sense amplifier circuit. The memory cell array has several memory cells arranged in a matrix with word and bit lines. The row decoder receives a row address to select the word line. The column decoder receives a column address to select a bit line. The sense amplifier circuit senses and amplifies a voltage from the bit line to read data of the selected memory cell.
In the semiconductor memory device with the above-mentioned structure, if the word line is active, several memory cells are accessed. In certain situations, even if the word line is active, it is undesirable to access all the memory cells connected to the word line.
An example of this situation is a branch target buffer used in branch prediction. The branch target buffer is generally an SRAM. An address of a branch command and a target address are stored in a memory cell array. The branch target buffer accesses the memory cells connected to the word line by activating the selected word line for taken branches as well as not-taken branches. Where branches are taken, the branch target buffer accesses the memory cell array to read the stored target address and then fetches a command of the pertinent target address. Where branches are not taken, the branch target buffer does not fetch the command of the target address. But if branches are not taken, the branch target buffer unnecessarily accesses the memory cell array, leading to wasted power.
As portable devices (e.g., portable personal computers, cell phones, personal digital assistants (PDA) and so forth) employing semiconductor memory devices become more widespread, power consumption reductions are actively developed. As power supplied to operate portable devices becomes more and more reduced, there is an increasing need to reduce power consumption. Since needlessly accessed memory cell arrays waste power, its elimination is desirable.